﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Data.SqlTypes;
using System.Timers;
using DAL;
using Utils;
using System.Data.SqlClient;
using BLL;

namespace WebUI.Pages
{
    public partial class _new : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!this.Page.IsPostBack)
            {
                ConnectionManager connMgr = new ConnectionManager();
                UserController usrController = new UserController();
                SlaController slaController = new SlaController();

                int idUser = usrController.GetUserID(User.Identity.Name);
                int idTime = usrController.GetUserTeamID(idUser);

                try
                {
                    SqlCommand sqlQryFabricantes = new SqlCommand("dbo.QryFabricantes");
                    SqlCommand sqlQryTiposSolicitacao = new SqlCommand("dbo.QryTiposSolicitacao");
                    SqlCommand sqlQryEstagiosVenda = new SqlCommand("dbo.QryEstagiosVenda");
                    SqlCommand sqlQryComercialEnt = new SqlCommand("dbo.QryUsuariosTimeID");
                    SqlCommand sqlQryComercialCorp = new SqlCommand("dbo.QryUsuariosTimeID");
                    SqlCommand sqlQryDiretores = new SqlCommand("dbo.QryUsuariosTimeID");

                    sqlQryFabricantes.CommandType = CommandType.StoredProcedure;
                    sqlQryTiposSolicitacao.CommandType = CommandType.StoredProcedure;
                    sqlQryEstagiosVenda.CommandType = CommandType.StoredProcedure;
                    sqlQryComercialCorp.CommandType = CommandType.StoredProcedure;
                    sqlQryComercialEnt.CommandType = CommandType.StoredProcedure;
                    sqlQryDiretores.CommandType = CommandType.StoredProcedure;

                    sqlQryFabricantes.Parameters.AddWithValue("@idFabricante", DBNull.Value);
                    sqlQryTiposSolicitacao.Parameters.AddWithValue("@idTipoSolicitacao", DBNull.Value);
                    sqlQryEstagiosVenda.Parameters.AddWithValue("@idEstagioVenda", DBNull.Value);
                    sqlQryComercialCorp.Parameters.AddWithValue("@idTime", 1);
                    sqlQryComercialEnt.Parameters.AddWithValue("@idTime", 2);
                    sqlQryDiretores.Parameters.AddWithValue("@idTime", 9);

                    ddlFabricante.DataSource = connMgr.doReader(sqlQryFabricantes);
                    ddlTipoSolicitacao.DataSource = connMgr.doReader(sqlQryTiposSolicitacao);
                    ddlEstagioVenda.DataSource = connMgr.doReader(sqlQryEstagiosVenda);
                    DataTable dtResponsavelCorp = connMgr.doReader(sqlQryComercialCorp);
                    DataTable dtResponsavelEnt = connMgr.doReader(sqlQryComercialEnt);
                    DataTable dtResponsavelDiretores = connMgr.doReader(sqlQryDiretores);
                    dtResponsavelCorp.Merge(dtResponsavelDiretores);
                    dtResponsavelCorp.Merge(dtResponsavelEnt);
                    ddlResponsavel.DataSource = dtResponsavelCorp;

                    ddlFabricante.DataTextField = "DescFabricante";
                    ddlTipoSolicitacao.DataTextField = "DescTipoSolicitacao";
                    ddlEstagioVenda.DataTextField = "DescEstagioVenda";
                    ddlResponsavel.DataTextField = "Nome";

                    ddlFabricante.DataValueField = "idFabricante";
                    ddlTipoSolicitacao.DataValueField = "idTipoSolicitacao";
                    ddlEstagioVenda.DataValueField = "idEstagioVenda";
                    ddlResponsavel.DataValueField = "idUsuario";

                    ddlAnalista.DataSource = usrController.GetTeamUsers(3);
                    ddlAnalista.DataTextField = "Nome";
                    ddlAnalista.DataValueField = "idUsuario";
                    ddlAnalista.DataBind();

                    ddlEstagioVenda.DataBind();
                    ddlFabricante.DataBind();
                    ddlTipoSolicitacao.DataBind();
                    ddlResponsavel.DataBind();

                    if (idTime == 1 | idTime == 2)
                    {
                        ddlResponsavel.SelectedValue = idUser.ToString();
                        ddlResponsavel.Enabled = false;
                    }
                    DateTime Hoje = DateTime.Now;
                    DateTime DataMax = Hoje.AddYears(2);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                }
            }
        }

        public void cmdGrava_Click(object sender, EventArgs e)
        {
            try
            {
                ConnectionManager connMgr = new ConnectionManager();
                UserController usrController = new UserController();
                RequestController reqController = new RequestController();
                TypeController tpController = new TypeController();
                FabricanteController fabController = new FabricanteController();

                int idUsuario = usrController.GetUserID(User.Identity.Name);
                int idGestor = usrController.GetGestorID(idUsuario);
                string GestorLogin = usrController.GetGestorLogin(idGestor);
                int idResponsavel = Convert.ToInt32(ddlResponsavel.SelectedValue);
                int idProposta = 0;
                int idTipoSolicitacao = Convert.ToInt32(ddlTipoSolicitacao.SelectedValue);
                int idFabricante = Convert.ToInt32(ddlFabricante.SelectedValue);
                int idEstagioVenda = Convert.ToInt32(ddlEstagioVenda.SelectedValue);
                string Descricao = txtDescricao.Text;
                string Titulo = txtTitulo.Text;
                string Cliente = txtCliente.Text;
                int idAnalistaEngajado = Convert.ToInt32(ddlAnalista.SelectedValue);

                if (txtNumeroProposta.Text != "")
                {
                    idProposta = Convert.ToInt32(txtNumeroProposta.Text);
                }

                DateTime data = Convert.ToDateTime(txtDataExpectativa.Text);

                reqController.NewRequest(idResponsavel, idUsuario, idTipoSolicitacao, idFabricante, idEstagioVenda, 1, data, Descricao, Titulo, Cliente, idProposta, idAnalistaEngajado);


                try
                {
                    EmailSender ES = new EmailSender();
                    string strResponsavel = usrController.GetUserName(Convert.ToInt32(ddlResponsavel.SelectedValue));

                    //////////////////////////////////////////////////////////////////////////////////////////////////////
                    System.Text.StringBuilder mailbody = new System.Text.StringBuilder();
                    mailbody.Append("<html><head><title>E-Mail</title><style type=text/css>.style1{font-family: Arial, Helvetica, sans-serif;}</style></head><body><div id=top style=width: 100%; height: 20%><h1 class=style1>Nova Solicitação de Apoio à Área de Soluções</h1></div><div id=content style=height: 60%; width: 100%> <br /> Solicitante: <b>");
                    mailbody.Append(usrController.GetUserName(idUsuario));
                    mailbody.Append("</b><br />");
                    mailbody.Append("Responsável: <b>");
                    mailbody.Append(strResponsavel);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Título da Oportunidade: <b>");
                    mailbody.Append(txtTitulo.Text);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Tipo de Solicitação: <b>");
                    mailbody.Append(ddlTipoSolicitacao.SelectedItem);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Numero da Proposta: <b>");
                    mailbody.Append(txtNumeroProposta.Text);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Data de Expectativa: <b>");
                    mailbody.Append(txtDataExpectativa.Text);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Cliente: <b>");
                    mailbody.Append(txtCliente.Text);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Descrição: <b>");
                    mailbody.Append(txtDescricao.Text);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Fabricante: <b>");
                    mailbody.Append(ddlFabricante.SelectedItem);
                    mailbody.Append("</b><br />");
                    mailbody.Append("Estágio de Venda: <b>");
                    mailbody.Append(ddlEstagioVenda.SelectedItem);
                    mailbody.Append("</b><br />");
                    mailbody.Append("</b><br />");
                    mailbody.Append("<br />");
                    //////////////////////////////////////////////////////////////////////////////////////////////////////

                    string Subject = "Nova Solicitacao de Apoio:" + txtCliente.Text + " - " + txtTitulo.Text;

                    ES.SendNew(User.Identity.Name, usrController.GetGestorLogin(idGestor), Subject, mailbody.ToString());

                    lblStatus.Text = "Solicitacao cadastrada com sucesso!";
                    lblStatus.ForeColor = System.Drawing.Color.Yellow;
                    lblStatus.Visible = true;
                }
                catch (Exception ex)
                {
                    lblStatus.Visible = true;
                    lblStatus.ForeColor = System.Drawing.Color.Yellow;
                    lblStatus.Text = "Erro ao enviar notificação de Email " + ex.Message;
                }
                finally
                {
                }
            }
            catch (Exception ex)
            {
                lblStatus.Text = "Erro ao cadastrar a solicitação!";
                lblStatus.ForeColor = System.Drawing.Color.Yellow;
                lblStatus.Visible = true;
            }
            finally
            {
                ddlEstagioVenda.SelectedIndex = 0;
                ddlFabricante.SelectedIndex = 0;
                ddlTipoSolicitacao.SelectedIndex = 0;

                txtCliente.Text = "";
                txtDataExpectativa.Text = "";
                txtDescricao.Text = "";
                txtTitulo.Text = "";
                txtNumeroProposta.Text = "";
            }
        }
    }
}
